package com.om.base;


import java.lang.reflect.Method;

import com.om.common.TimeStampToInt;

public class DataParse {

	public static Object InvokeStaticMethod(String methodName, Object[] args)
			throws Exception {
		Class[] argsClass = new Class[args.length];
			int i = 0;
		for (int j = args.length; i < j; ++i) {
			argsClass[i] = args[i].getClass();
		}
		Method method = DataParse.class
				.getDeclaredMethod(methodName, argsClass);
	
		return method.invoke(DataParse.class, args);
	}

	public static String GetFieldValue(String field, String value) {
		String myString = field;
		int p = myString.indexOf("|");
		if (p > 0) {
			// 需要函数支持

			String parString = Utils.leftAndRight(myString, "|",false);
			String funString = Utils.leftAndRight(parString, ":",true);
			parString = Utils.leftAndRight(parString, ":",false);
			String tempString = "";
			// 假设我们对外被调用的参数都有2个参数
			String[] arg = new String[2];
			arg[0] = value;
			arg[1] = parString;
			try {
				return DataParse.InvokeStaticMethod(funString, arg).toString();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				return value;
			}
		} else {
			return value;
		}
	}

	/**
	 * 字符串截取
	 * 
	 * @param fieldValue
	 *            被截取字符串
	 * @param fix
	 *            要查询的字符串
	 * @param isleft
	 *            向那个方向截取
	 * @return 如果 “要查询的字符串”没有找到并且是，放回原来字符串
	 */
	public static String leftAndRight(String fieldValue, String fix,
			Boolean isleft) {
		String strtmp = "";
		int istart = fieldValue.indexOf(fix);

		if (isleft == true) {
			if (istart > 0) {
				return fieldValue.substring(0, istart);
			} else {
				return fieldValue;
			}
		} else {
			if (istart > 0) {
				return fieldValue.substring(istart + 1, fieldValue.length());
			} else {
				return "";
			}
		}
		
	}

	/**
	 * 将一个时间字符串转化长固定格式
	 * 
	 * @param data
	 * @param format
	 * @return
	 */
	public static String format(String data, String format) {
		if(!"".equals(data) && data!=null){
			return TimeStampToInt.timeToStr(data, format);
		}else{
			return "";
		}
	}

	/**
	 * 获取时间字符串前19位
	 * 
	 * @param data
	 * @param format
	 * @return
	 */
	public static String cutDate(String data, String format) {
		if(!"".equals(data) && data!=null){
			if(data.length()<19){
				return data;
			}
			return data.substring(0, 19);
		}else{
			return "";
		}
		
	}
}
